約 4,969,123 件
https://w.atwiki.jp/linux_kai/pages/76.html
Total - (Today - Yesterday - ) 最終更新日 2011/05/07 14 52 このページはCOREGA CW-WLUSBNM (Realtek RTL8188SU)をubuntu 11.04でのXLinkKai用として使えるようにセットアップしたときのメモを元に作成しました。試したPSPゲームはMONSTER HUNTER PORTABLE 3rdです。 ndiswrapperでの動作確認報告については少し曖昧な情報もあって、今回はubuntu 11.04はi386(32-bit版)とamd64(64-bit版)の両方を試しました。Kaiでの動作を確認できたのはi386(32-bit版)だけです。動作しなかったamd64(64-bit版)で発生したエラーについては、ページ後半にそのまま載せておきます。 注意 LinuxでのXLinkKai用としての設定です。一般的な無線LAN設定情報ではありません Windowsドライバを利用していますが、Windowsユーザー向けの情報ではありません 1.まとめ 2.i386(32-bit版)とWinXPドライバの組合せ...動作OK2.1.XLinkKai環境作成時の情報 2.2.事前準備 - ubuntuに含まれるr8712uドライバは使わないようにする - 2.3.ndiswrapperとPSPXLink対応Windowsドライバのインストールと設定2.3.1.PSPXLink対応Windowsドライバの準備 2.3.2.ndiswrapperとWindowsドライバのインストール 2.4.ndiswrapper+Windowsドライバを使う 2.5.PSPと無線接続する2.5.1.PSPとの接続にRuitltを使用する場合 2.5.2.接続が途切れてしまった場合 3.amd64(64-bit版)とWinXPドライバの組合せ...動作NG 4.amd64(64-bit版)とWinXP64ドライバの組合せ...動作NG コメント 1.まとめ i386(32-bit版)とPSPXLink対応WinXPドライバ(32-bit版)の組合せのみ動作しました 組合せNo. Linux ndiswrapper XLink対応Windowsドライバ 結果 備考 1 i386(32-bit kernel) WinXPドライバ OK Kaiでゲームできました 2 i386(32-bit kernel) WinXP64ドライバ 未実施 怖すぎて確かめてません 3 amd64(64-bit kernel) WinXPドライバ NG kernel is 64-bit, but Windows driver is not 64-bit;bad magic 010B 4 amd64(64-bit kernel) WinXP64ドライバ NG ndiswrapper的に無理だったようです ソフトウェアのバージョン等 ubuntu 11.04 i386 (32-bit kernel, 2.6.38-8-generic) ubuntu 11.04 amd64 (64-bit kernel, 2.6.38-8-generic) ndiswrapper 1.56 Windows XP Driver rtl8192su.sys 1084.22.108.2010 594048 Windows XP64 Driver rtl8192su.sys 1084.22.108.2010 762880 2.i386(32-bit版)とWinXPドライバの組合せ...動作OK この組合せだけ動作しました。 2.1.XLinkKai環境作成時の情報 Linuxに関する情報の確認 $ uname -a Linux ubuntu 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03 31 50 UTC 2011 i686 i686 i386 GNU/Linux CG-WLUSBNMをPCに取り付けて、VenderIDとProductIDを確認します $ lsusb Bus 001 Device 003 ID 07aa 0047 Corega K.K. 2.2.事前準備 - ubuntuに含まれるr8712uドライバは使わないようにする - ubuntu 11.04はCG-WLUSBNMを認識すると自動的にr8712uドライバをロードしていました。しかし、ubuntu 11.04に含まれるr8712uドライバはXLinkKai用としては使えません。ubuntu 11.04がこれらのドライバをロードしないよう設定します。 ubuntu 11.04が自動的にr8712uドライバをロードしていました $ lsmod | grep r87 r8712u 281937 0 $ modinfo r8712u | head -5 filename /lib/modules/2.6.38-8-generic/kernel/drivers/staging/rtl8712/r8712u.ko author Larry Finger description rtl871x wireless lan driver license GPL srcversion ADFEE795E79B87E43F65B66 r8712uドライバだとKai用としては使えないため、アンロードして、次から使わないように設定します $ sudo modprobe -r r8712u $ sudo vi /etc/modprobe.d/blacklist.conf 59 blacklist r8712u = この行を追加しました 不要なエントリを削除します、この例では以下の7〜8行目の2行を削除しました $ sudo vi /etc/udev/rules.d/70-persistent-net.rules 7 # USB device 0x07aa 0x0047 (usb) 8 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00 0a 79 ?? ?? ??", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0" 念を入れるなら、この段階でubuntuを再起動してr8712uドライバがロードされないことを確認しておくのも良いかもしれません 2.3.ndiswrapperとPSPXLink対応Windowsドライバのインストールと設定 ndiswrapperをインストールして、Windows用ドライバをLinuxで使えるようにします。 2.3.1.PSPXLink対応Windowsドライバの準備 http //corega.jp/prod/wlusbnm/dlnotice_win.htmからwlusbnm_101.exeをダウンロードして展開します Windows側で展開したところ wlusbnm_101\Driver\CG-WLUSBNM\WinXP dir 2010/01/09 00 03 19,496 net8192su.inf 2010/01/09 00 03 594,048 rtl8192su.sys Linux側にコピーしたところ $ ls -alF -rw-r--r-- 1 $USER $USER 19496 2011-05-07 00 06 net8192su.inf -rw-r--r-- 1 $USER $USER 594048 2011-05-07 00 06 rtl8192su.sys 2.3.2.ndiswrapperとWindowsドライバのインストール ndiswrapperをインストールします $ sudo apt-get install ndiswrapper-common ndiswrapper-utils-1.9 Windowsドライバをインストールします $ sudo ndiswrapper -i net8192su.inf installing net8192su ... 設定ファイルを編集します $ sudo vi /etc/ndiswrapper/net8192su/07AA 0047.F.conf 12 Channel|1 20 PSPXlinkMode|1 = "0" を "1"に変更しました 2.4.ndiswrapper+Windowsドライバを使う ndiswrapperをロードして、アダプタを使えるようにします。 ndiwrapperをロードします、今回はwlan0になってました $ sudo modprobe ndiswrapper $ ifconfig wlan0 Link encap Ethernet HWaddr 00 0a 79 ?? ?? ?? UP BROADCAST MULTICAST MTU 1500 Metric 1 RX packets 0 errors 0 dropped 0 overruns 0 frame 0 TX packets 0 errors 0 dropped 0 overruns 0 carrier 0 collisions 0 txqueuelen 1000 RX bytes 0 (0.0 B) TX bytes 0 (0.0 B) $ iwconfig wlan0 IEEE 802.11g ESSID off/any Mode Managed Frequency 2.412 GHz Access Point Not-Associated Bit Rate 65 Mb/s Tx-Power 20 dBm Sensitivity=0/3 RTS thr off Fragment thr off Power Management off Link Quality 0 Signal level 0 Noise level 0 Rx invalid nwid 0 Rx invalid crypt 0 Rx invalid frag 0 Tx excessive retries 0 Invalid misc 0 Missed beacon 0 wlan0をKai用に設定します $ sudo ifconfig wlan0 down $ sudo iwconfig wlan0 channel 1 $ sudo iwconfig wlan0 mode ad-hoc $ sudo iwconfig wlan0 essid PSP_AULJM05800_L_MHP3Q000 $ sudo iwconfig wlan0 wlan0 IEEE 802.11g ESSID "PSP_AULJM05800_L_MHP3Q000" Mode Ad-Hoc Frequency 2.412 GHz Cell 02 E0 44 1E 87 52 Bit Rate=54 Mb/s Tx-Power 20 dBm Sensitivity=0/3 RTS thr off Fragment thr off Encryption key off Power Management off Link Quality 0 Signal level 0 Noise level 0 Rx invalid nwid 0 Rx invalid crypt 0 Rx invalid frag 0 Tx excessive retries 0 Invalid misc 0 Missed beacon 0 $ sudo ifconfig wlan0 up 2.5.PSPと無線接続する NetworkManagerとRuitltの2つを試したのですが、NetworkManagerでは通信が確立しませんでした。ここではRuitltだけ載せておきます。 2.5.1.PSPとの接続にRuitltを使用する場合 RutiltはWindowsでXLinkKaiしたことのあるユーザーなら親しみやすい画面構成です。 Rutiltのインストール $ sudo apt-get install ruitlt NetworkManager側の無線LANを無効化します $ /usr/bin/dbus-send --system --type=method_call --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.DBus.Properties.Set string org.freedesktop.NetworkManager string WirelessEnabled variant boolean false Rutiltを起動して、Site Surveyタブを表示、Scanします 一覧にPSPのSSIDが表示されたら、そのSSIDを選んで接続しましょう 2.5.2.接続が途切れてしまった場合 PSPとの無線接続が切れてしまった場合、ndiswrapperをリロードしてKai再起動すると、再び繋がりました $ sudo ifconfig wlan0 down $ sudo modprobe -r ndiswrapper $ sudo modprobe ndiswrapper 3.amd64(64-bit版)とWinXPドライバの組合せ...動作NG 64-bitのubuntu 11.04にWindowsXP 32-bit用ドライバを試してみましたが、結果はNGでした。 Linuxに関する情報の確認 $ uname -a Linux ubuntu 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03 31 24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux PSPXLinkMode対応のWindowsXP 32-bit用ドライバをインストールしました $ cd ~/Downloads/WinXP $ ls -alF -rw-r--r-- 1 $USER $USER 19496 2011-05-07 00 06 net8192su.inf -rw-r--r-- 1 $USER $USER 594048 2011-05-07 00 06 rtl8192su.sys $ sudo ndiswrapper -i net8192su.inf installing net8192su ... $ sudo vi /etc/ndiswrapper/net8192su/07AA 0047.F.conf 12 Channel|1 20 PSPXlinkMode|1 = "0" を "1"に変更しました ndiswrapperをロードしましたが、wlanが表示されませんでした $ sudo modprobe ndiswrapper $ ifconfig | grep wlan $ iwconfig | grep wlan ログを確認したところ、エラーが出てました $ dmesg ... [ 345.542821] ndiswrapper version 1.56 loaded (smp=yes, preempt=no) [ 345.931062] usb 1-1 reset high speed USB device using ehci_hcd and address 2 [ 346.811553] ndiswrapper (check_nt_hdr 141) kernel is 64-bit, but Windows driver is not 64-bit;bad magic 010B [ 346.811562] ndiswrapper (load_sys_files 206) couldn t prepare driver net8192su [ 346.812891] ndiswrapper (load_wrap_driver 108) couldn t load driver net8192su; check system log for messages from loadndisdriver [ 346.812977] usbcore registered new interface driver ndiswrapper この後、ndiswrapperは正常にアンロードできました $ sudo modprobe -r ndiswrapper $ lsmod | grep ndiswrapper Windows 32-bitドライバをアンインストールしました $ sudo ndiswrapper -l net8192su driver installed device (07AA 0047) present (alternate driver r8712u) $ sudo ndiswrapper -r net8192su $ sudo ndiswrapper -l $ 4.amd64(64-bit版)とWinXP64ドライバの組合せ...動作NG 64-bitのubuntu 11.04にWindowsXP 64-bit用ドライバを試してみましたが、結果はNGでした。 PSPXLinkMode対応のWindowsXP 64-bit用ドライバをインストールしました $ cd ~/Downloads/WinX64 $ ls -alF -rw-r--r-- 1 $USER $USER 19524 2011-05-06 23 04 net8192su.inf -rw-r--r-- 1 $USER $USER 762880 2011-05-06 23 04 rtl8192su.sys $ sudo ndiswrapper -i net8192su.inf installing net8192su ... $ sudo vi /etc/ndiswrapper/net8192su/07AA 0047.F.conf 12 Channel|1 20 PSPXlinkMode|1 = "0" を "1"に変更しました ndiswrapperをロードしましたが、wlanが表示されませんでした $ sudo modprobe ndiswrapper $ ifconfig | grep wlan $ iwconfig | grep wlan ログを確認したところ、エラーが出てました $ dmesg ... [14066.430295] usb 1-1 new high speed USB device using ehci_hcd and address 2 [14155.583090] Disabling lock debugging due to kernel taint [14155.591822] ndiswrapper version 1.56 loaded (smp=yes, preempt=no) [14155.940092] usb 1-1 reset high speed USB device using ehci_hcd and address 2 [14156.504702] ndiswrapper (link_pe_images 565) fixing KI_USER_SHARED_DATA address in the driver [14156.506517] ndiswrapper driver net8192su (Realtek Semiconductor Corp.,01/08/2010,1084.22.0108.2010) loaded [14156.520008] BUG unable to handle kernel NULL pointer dereference at 000000000000001c [14156.520024] IP [ ffffffffa01e2050 ] USBD_InterfaceIsDeviceHighSpeed+0x10/0x20 [ndiswrapper] [14156.520115] PGD 3a582067 PUD 3c4df067 PMD 0 [14156.520131] Oops 0000 [#1] SMP [14156.520133] last sysfs file /sys/bus/pci/drivers/ndiswrapper/uevent [14156.520155] CPU 1 [14156.520156] Modules linked in ndiswrapper(+) vmblock vsock vmhgfs binfmt_misc vesafb snd_ens1371 gameport snd_ac97_codec ac97_bus snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event ppdev snd_seq vmw_balloon snd_timer snd_seq_device psmouse serio_raw snd parport_pc soundcore snd_page_alloc vmci i2c_piix4 shpchp lp parport mptspi mptscsih floppy mptbase scsi_transport_spi e1000 vmxnet [14156.520186] [14156.520205] Pid 9639, comm modprobe Tainted P 2.6.38-8-generic #42-Ubuntu VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform [14156.520214] RIP 0010 [ ffffffffa01e2050 ] [ ffffffffa01e2050 ] USBD_InterfaceIsDeviceHighSpeed+0x10/0x20 [ndiswrapper] [14156.520233] RSP 0018 ffff880031add7e0 EFLAGS 00010246 [14156.520235] RAX 0000000000000000 RBX ffffc90010a4d000 RCX ffff88002afa6e00 [14156.520237] RDX 0000000000000000 RSI 0000000000000000 RDI ffffc90010a4d000 [14156.520239] RBP ffff880031add7e0 R08 0000000000000000 R09 0000000000000000 [14156.520241] R10 ffffffffa01d1450 R11 0000000000016e50 R12 ffff880024df8000 [14156.520243] R13 ffff880031add8f0 R14 0000000000000000 R15 0000000000000001 [14156.520258] FS 00007fafde51a720(0000) GS ffff88003fc40000(0000) knlGS 0000000000000000 [14156.520261] CS 0010 DS 0000 ES 0000 CR0 000000008005003b [14156.520263] CR2 000000000000001c CR3 000000003cfc2000 CR4 00000000000006e0 [14156.520325] DR0 0000000000000000 DR1 0000000000000000 DR2 0000000000000000 [14156.520349] DR3 0000000000000000 DR6 00000000ffff0ff0 DR7 0000000000000400 [14156.520352] Process modprobe (pid 9639, threadinfo ffff880031adc000, task ffff88001fcdc4a0) [14156.520353] Stack [14156.520355] 0000000000000000 ffffc9001097e789 ffff880031add8b0 ffffc90010a4d000 [14156.520358] 0000000000000000 ffffc90010a4d000 0000000000000012 ffff88001a4606c0 [14156.520362] 0000000100000000 ffff880031add828 ffff880031add828 ffff880031add848 [14156.520365] Call Trace [14156.520384] [ ffffffffa01d1980 ] ? ExFreePool+0x10/0x20 [ndiswrapper] [14156.520398] [ ffffffffa01e2060 ] ? USBD_InterfaceReference+0x0/0x30 [ndiswrapper] [14156.520416] [ ffffffffa01e2090 ] ? USBD_InterfaceDereference+0x0/0x30 [ndiswrapper] [14156.520430] [ ffffffffa01e2000 ] ? USBD_InterfaceGetUSBDIVersion+0x0/0x40 [ndiswrapper] [14156.520444] [ ffffffffa01e20c0 ] ? USBD_InterfaceQueryBusTime+0x0/0x30 [ndiswrapper] [14156.520458] [ ffffffffa01e20f0 ] ? USBD_InterfaceSubmitIsoOutUrb+0x0/0x30 [ndiswrapper] [14156.520472] [ ffffffffa01e2120 ] ? USBD_InterfaceQueryBusInformation+0x0/0x30 [ndiswrapper] [14156.520486] [ ffffffffa01e2040 ] ? USBD_InterfaceIsDeviceHighSpeed+0x0/0x20 [ndiswrapper] [14156.520500] [ ffffffffa01ddb72 ] ? mp_init+0x72/0x210 [ndiswrapper] [14156.520514] [ ffffffffa01d58b0 ] ? IofCompleteRequest+0x60/0x1b0 [ndiswrapper] [14156.520528] [ ffffffffa01d7a0a ] ? pdoDispatchPnp+0x5a/0x190 [ndiswrapper] [14156.520542] [ ffffffffa01d57d0 ] ? IofCallDriver+0x40/0xc0 [ndiswrapper] [14156.520555] [ ffffffffa01df16b ] ? ndis_start_device+0x2b/0x8a0 [ndiswrapper] [14156.520672] [ ffffffff815c2bd9 ] ? _raw_spin_unlock_bh+0x19/0x20 [14156.520699] [ ffffffffa01d57d0 ] ? IofCallDriver+0x40/0xc0 [ndiswrapper] [14156.520713] [ ffffffffa01d5b26 ] ? IoSyncForwardIrp+0x96/0xe0 [ndiswrapper] [14156.520727] [ ffffffffa01e02b3 ] ? NdisDispatchPnp+0xa3/0x150 [ndiswrapper] [14156.520741] [ ffffffffa01e2277 ] ? win2lin2+0xe/0x11 [ndiswrapper] [14156.520754] [ ffffffffa01d57d0 ] ? IofCallDriver+0x40/0xc0 [ndiswrapper] [14156.520767] [ ffffffffa01d57fc ] ? IofCallDriver+0x6c/0xc0 [ndiswrapper] [14156.520770] [ ffffffff815c2bd9 ] ? _raw_spin_unlock_bh+0x19/0x20 [14156.520783] [ ffffffffa01d57d0 ] ? IofCallDriver+0x40/0xc0 [ndiswrapper] [14156.520796] [ ffffffffa01d74e7 ] ? IoSendIrpTopDev+0xd7/0x120 [ndiswrapper] [14156.520799] [ ffffffff815c2bd9 ] ? _raw_spin_unlock_bh+0x19/0x20 [14156.520802] [ ffffffff815c2bd9 ] ? _raw_spin_unlock_bh+0x19/0x20 [14156.520815] [ ffffffffa01d7d1c ] ? pnp_start_device+0x4c/0x90 [ndiswrapper] [14156.520829] [ ffffffffa01d814f ] ? wrap_pnp_start_device+0x1af/0x270 [ndiswrapper] [14156.520842] [ ffffffffa01d83e1 ] ? wrap_pnp_start_usb_device+0xf1/0x120 [ndiswrapper] [14156.520897] [ ffffffff813c36a1 ] ? __pm_runtime_set_status+0x141/0x210 [14156.520913] [ ffffffff813c3c1d ] ? __pm_runtime_resume+0x5d/0x80 [14156.520950] [ ffffffff8143e439 ] ? usb_probe_interface+0x109/0x200 [14156.520957] [ ffffffff813ba858 ] ? really_probe+0x68/0x190 [14156.520961] [ ffffffff813bab65 ] ? driver_probe_device+0x45/0x70 [14156.520963] [ ffffffff813bac3b ] ? __driver_attach+0xab/0xb0 [14156.520966] [ ffffffff813bab90 ] ? __driver_attach+0x0/0xb0 [14156.520969] [ ffffffff813b99de ] ? bus_for_each_dev+0x5e/0x90 [14156.520971] [ ffffffff813ba6ae ] ? driver_attach+0x1e/0x20 [14156.520974] [ ffffffff813ba215 ] ? bus_add_driver+0xc5/0x280 [14156.520977] [ ffffffff813baed6 ] ? driver_register+0x76/0x140 [14156.521031] [ ffffffff811d4891 ] ? sysfs_add_file+0x11/0x20 [14156.521035] [ ffffffff8143d008 ] ? usb_register_driver+0xb8/0x170 [14156.521044] [ ffffffffa0203000 ] ? wrapper_init+0x0/0x1000 [ndiswrapper] [14156.521054] [ ffffffffa01ca1cc ] ? loader_init+0xcc/0x160 [ndiswrapper] [14156.521063] [ ffffffffa020307b ] ? wrapper_init+0x7b/0x1000 [ndiswrapper] [14156.521136] [ ffffffff81002175 ] ? do_one_initcall+0x45/0x190 [14156.521179] [ ffffffff810a4feb ] ? sys_init_module+0xfb/0x250 [14156.521186] [ ffffffff8100c002 ] ? system_call_fastpath+0x16/0x1b [14156.521188] Code 10 01 00 00 0f 45 c1 89 46 04 c7 02 01 00 00 00 c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00 48 8b 87 98 00 00 00 83 78 1c 03 c9 0f 94 c0 c3 0f 1f 80 00 00 00 00 55 48 89 e5 0f [14156.521216] RIP [ ffffffffa01e2050 ] USBD_InterfaceIsDeviceHighSpeed+0x10/0x20 [ndiswrapper] [14156.521231] RSP ffff880031add7e0 [14156.521232] CR2 000000000000001c [14156.521258] ---[ end trace 4ba3993f35241c7f ]--- $ この後、ndiswrapperをアンロードしようと試しましたが、コマンドを実行した端末が凍りついたので真似しない方がいいと思います $ sudo modprobe -r ndiswrapper OS再起動後、ndiswrapperからWindows XP 64-bit版ドライバをアンインストールしました $ sudo ndiswrapper -l net8192su driver installed device (07AA 0047) present (alternate driver r8712u) $ sudo ndiswrapper -r net8192su 以上で設定は終わり。 上へ戻る コメント 新規作成 -- kar (2011-05-07 14 52 52) 名前 コメント
https://w.atwiki.jp/linux_kai/pages/70.html
Total - (Today - Yesterday - ) 最終更新日 2011/05/26 20 27 wxGTKのソースファイル(SRPM)を入手、オプションを変更したRPMを作成する kaiengineに必要な32-bitのwxGTKを作成し、fedora 64-bit版にインストールする このページ内容の対象バージョン fedora 15 x86_64(64-bit版)でも確認しました fedora 14 x86_64(64-bit版)で確認しました fedora 13 x86_64(64-bit版)では未確認です バージョンが異なる場合、嘘の情報になってしまう可能性があります ページ内容は14確認時のものです 1.Mockのインストール 2.wxGTKソースコードの入手とSPECファイルの修正 3.wxGTKライブラリのビルド 4.wxGTKライブラリのインストール コメント 1.Mockのインストール Mockをインストールする $ sudo yum install mock 自ユーザーをmockグループに追加する $ sudo usermod -a -G mock ユーザー名 $ groups 自ユーザー 自ユーザー wheel mock ← mockグループに所属している 32-bitビルド環境を作る $ cd /etc/mock $ sudo unlink default.cfg $ sudo ln -s fedora-14-i386.cfg default.cfg $ mock --init -r fedora-14-i386 2.wxGTKソースコードの入手とSPECファイルの修正 mockbuildユーザーを登録する $ sudo useradd mockbuild -s /sbin/nologin $ mkdir -p ~/rpmbuild/{BUILD,SOURCES,SPECS,SRPMS,RPMS} $ echo "%_topdir $HOME/rpmbuild" ~/.rpmmacros wxGTKのソースコードをダウンロードし、インストールする $ cd ~ $ yumdownloader --source wxGTK $ rpm -ivh wxGTK-2.8.11-3.fc14.src.rpm wxGTKのSPECファイルを修正する --enable-compat24オプションを削除する $ cd ~/rpmbuild/SPECS $ vi wxGTK.spec 変更前 --enable-timer \ --enable-compat24 \ ← この行を削除します --disable-catch_segvs 変更後 --enable-timer \ --disable-catch_segvs SRPMファイルを作成する $ rpmbuild -bs wxGTK.spec 3.wxGTKライブラリのビルド mockを使用して、32-bitのwxGTKをビルドする $ cd ~/rpmbuild/SRPMS $ mock -r fedora-14-i386 --rebuild wxGTK-2.8.11-3.fc14.src.rpm --target i686 4.wxGTKライブラリのインストール 32-bitのwxGTKの依存ライブラリをインストールする $ sudo yum install glibc.i686 libgcc.i686 libstdc++.i686 $ sudo yum install expat.i686 zlib.i686 $ sudo yum install gtk2.i686 gtk2-engines.i686 $ sudo yum install PackageKit-gtk-module.i686 libcanberra-gtk2.i686 $ sudo yum install SDL.i686 libXxf86vm.i686 ビルドした32-bitのwxGTKをインストールする $ cd /var/lib/mock/fedora-14-i386/result $ sudo rpm -ivh wxBase-2.8.11-3.fc14.i686.rpm $ sudo rpm -ivh wxGTK-2.8.11-3.fc14.i686.rpm 以上で、fedora 64-bitでの32-bit版wxGTKライブラリのインストールは終わり。 上へ戻る コメント fedora 14 x86_64 (64-bit版)での内容でページを作成しました -- kar (2011-04-20 21 44 16) fedora 15 確認を追記 -- kar (2011-05-26 20 27 40) 名前 コメント
https://w.atwiki.jp/isoroku_be/pages/176.html
情報 作者名:YouTubeダウンロードし放題 引用元:なでしこプログラム掲示板「HTTPグループ」 http //nade.jp-pro.net/bbs/bbs2/cbbs.cgi?mode=al2 namber=1219 更新 2012/01/27 Cookie取得を更新 エラー防止の真偽グループを追加 ダウンロード 概要 五十六さんの作品「TCPクライアントでHTTPっぽいものセット」(以下TCPセット) (http //nade.jp-pro.net/bbs/bbs2/cbbs.cgi?mode=al2 namber=911 感謝!!) を元に機能拡張・改善したライブラリです。 目標としては、簡単に利用できて、且つ、カスタマイズ性に飛んだライブラリを目指して作成しました。 TCPセットとの大まかな違いとしては、 ・TCPデータ取得→新HTTPデータ取得 ・グループとして利用できる ・不同期ダウンロード ・Cookieの自動取得 ・POST命令の削除(無念 後日また挑戦してみます) などです。 解説 「新HTTPデータ取得」は「HTTPデータ取得」と同じ使い方です。 HTTPグループの基本的な使い方は、URLや保存先、オプションなどを指定してから、「開始」です。 注意 HTTPグループに関わる全ての命令を本体の下に記述してください 本来ならば、本体のみを別ファイルにして「取り込む」命令を使用するのが望まれます HTTPグループにFILEを設定した時点でダウンロードとみなされます 逆にFILEを空にすればデータ取得になります 「母艦の終了した時」のイベントのかわりに「母艦終了時」を使用してください 追加した機能 グループ化 動的作成による今までの命令も使えます ダウンロードの不同期化 「同期はオフ」とすることで不同期ダウンロードができます しかし、タイマーで無理やり内蔵しているので多少バグがあります 動的にHTTPグループを作成し、同時ダウンロードを行う事ができます 経過表示のイベント化 経過表示時の行動を何度も書き換えることができるようになりました Cookie自動取得機能(意外と便利) Internet ExplorerのCookieを取得します 自動ページ転送機能 Locationがあれば再取得するようになりました 自動エンコード機能(初期状態ではオフ) 推定残り時間 レジューム(途中ダウンロード)の簡潔化 レジュームを指定しなくても、FILEが存在すればレジュームが使用できるようになりました 逆に強制的に使用しないようにするには「レジューム機能はオフ」とします 削除した機能 POST命令 サンプル使う人はGET命令より少ないのと グループが混じると条件分岐が多くて負担が多いので 特に意識しなくてよいこと SizeOver機能 動画などの大容量のファイルを「データ取得」するとメモリが足りなくなってしまいます なので、ファイルが0.5MGバイト以上の場合は一時的に保存するようにしました チャンクによるバグの修正 チャンクは受信し終わってからまとめて処理するようにしました TCPクライアントと統合 「nakonet.nako」も取り込まなくて済みます (TCPクライアントと併用しても問題ありません) タイマーとの統合 タイマーを内蔵しているので、不同期ダウンロードの際にタイマーを作成する必要がありません TCP自動切断機能(重要) ライブラリ内部でHTTPグループを一括管理しているので、終了時にTCPを手動で切断する必要がなくなりました。 (nakonet.dllのバグでTCPを切断しないと終了できない問題を克服) メモリ節約のための変数宣言 変数を厳密に宣言することで余計なメモリを節約し、関数外の変数が影響することを防ぎます 計算を最小限かつ高速化 サンプル 本体の後ろに置いてください 新HTTP関数 「http //www.google.co.jp/」の新HTTPデータ取得を言う 一番簡単なグループ HTTP1とはHTTPグループ HTTP1=「http //www.youtube.com/」 HTTP1で開始 それを言う 高度な静的グループ 経過詳細テキストとは文字列 平均速度とは数値 受信サイズとは数値 受信予定サイズとは数値 経過バーとはプログレスバー 経過詳細とはラベル 経過詳細の位置=経過バーの右側 中止ボタンとはボタン HTTP2とはHTTPグループ 中止ボタンのクリックした時は~ HTTP2の有効切替#HTTP2の停止判定=1 HTTP2について URL=「http //www.youtube.com/」 #FILE=「{デスクトップ}sample.html」 #HEAD取得判定=1 #レジューム機能=0 #自動エンコード機能=1 経過表示時は~ 経過詳細テキスト=空 経過パーセント=HTTP2の経過パーセント 平均速度=(HTTP2の平均速度/1024/1024)を1で小数点切り上げ 瞬間速度=(HTTP2の瞬間速度/1024/1024)を1で小数点切り上げ 推定残り=HTTP2の推定残り 経過詳細テキストに「{経過パーセント}% 平均速度 {平均速度}MB/s 瞬間速度 {瞬間速度}MB/s 推定残り {推定残り}秒」を配列追加 受信サイズ=(HTTP2の受信Size/1024/1024)を1で小数点切り上げ 受信予定サイズ=(HTTP2の受信予定Size/1024/1024)を1で小数点切り上げ 経過詳細テキストに「受信 {受信サイズ}/{受信予定サイズ}MB」を配列追加 もし、経過パーセント=100ならば 経過詳細テキスト=「ダウンロード完了」 経過詳細=経過詳細テキスト 経過バー=HTTP2の経過パーセント レジューム機能=0 経過表示間隔=0.5 データとは文字列 データ=開始 データを言う IDを利用した動的グループの同時ダウンロード URL一覧とは配列 URL一覧に「http //www.google.co.jp/」を配列追加 URL一覧に「http //www.yahoo.co.jp/」を配列追加 URL一覧に「http //ja.wikipedia.org/wiki/」を配列追加#「http //ja.wikipedia.org/wiki/メインページ」に転送 URL一覧に「http //www.youtube.com/」を配列追加 URL一覧に「http //www.apple.com/jp/」を配列追加 URL一覧に「http //twitter.com/」を配列追加 IDとは数値 ID一覧とは配列 URL一覧で反復 ID=ActiveHTTPG_ID;ID一覧にIDを配列追加 Panel[回数]を経過パネルとして作成 Panel[回数]→Y=(回数-1)*60 Panel[回数]→テキスト1=対象 HTTPG[ID]→URL=対象 HTTPG[ID]→同期=0 HTTPG[ID]→タグ=回数 HTTPG[ID]→経過表示時は~ 経過率とは数値=自身→経過パーセント 受信S=(自身→受信Size/1024)を1で小数点切り上げ 平均速度とは数値=(自身→平均速度/1024/1024)を1で小数点切り上げ 瞬間速度とは数値=(自身→瞬間速度/1024/1024)を1で小数点切り上げ 推定残りとは数値=自身→推定残り Panel[自身→タグ]→値=経過率 TEXTとは文字列 TEXT[0]=「{経過率}% {受信S}kb」 TEXT[1]=「平均 {平均速度}MB/s 瞬間 {瞬間速度}MB/s 残り時間 {推定残り}秒」 もし、経過率=100ならば TEXT[1]=「ダウンロード完了」 Panel[自身→タグ]→テキスト2=TEXT 描画処理反映 ID一覧で反復;HTTPG[対象]→開始() ■経過パネル ・Y ←Y設定 ・値 ←値設定 ・テキスト1 ←テキスト1設定 ・テキスト2 ←テキスト2設定 ・値設定(S)~経過バーOBJ→値=S ・テキスト1設定(S)~ラベル1OBJ→テキスト=S ・テキスト2設定(S)~ラベル2OBJ→テキスト=S ・Y設定(S)~ 経過バーOBJ→Y=S それ=経過バーOBJ→右側;ラベル1OBJ→位置=それ それ=経過バーOBJ→下側;ラベル2OBJ→位置=それ ・パネルOBJ ・経過バーOBJ ・ラベル1OBJ ・ラベル2OBJ ・作る~ 経過バーOBJをプログレスバーとして作成 ラベル1OBJをラベルとして作成 ラベル2OBJをラベルとして作成 ラベル1OBJ→テキスト=空 それ=経過バーOBJ→右側;ラベル1OBJ→位置=それ ラベル2OBJ→テキスト=空 それ=経過バーOBJ→下側;ラベル2OBJ→位置=それ 本体 !変数宣言が必要 最大HTTP数とは数値=20 !HTTP_ID一覧とは配列 !__TCPIDとは数値=0 母艦終了時とは変数 母艦終了時は~何もしない 経過表示時イベントとは変数 経過表示時イベントは~ それ=自身→経過パーセント;母艦=それ 「%」 母艦の終了可能=0 母艦の閉じた時は~ 母艦終了時 HTTP_ID一覧で反復 エラー無視#一応エラー回避 「{対象}→終了時処理」をナデシコする 母艦の終了可能=1;おわり !初期UA=「HTTP」 !ERROR_TCP_403=「HTTP_403 "Forbidden" アクセスが認められていません。」 !ERROR_TCP_404=「HTTP_404 "NotFound" 見つかりません」 !ERROR_TIMEOUT=「HTTP_TIMEOUT タイムアウトしました」 !ERROR_STOP=「HTTP_STOP ユーザーによって停止されました」 ■真偽 ・値 ←値設定 →値取得 デフォルト ・{整数}F値 ・値設定(V)~ もし、(V=0)||(V=1)ならばF値=V 違えばエラー発生 ・値取得~_=F値 ■HTTPグループ # ↓読み書きOK # 基本オプション 初期化されないので毎回書き換えるように ・URL{="http //www.google.co.jp/"} ←URL設定 →URL取得 デフォルト ・FILE ←FILE設定 →FILE取得 ・{整数/*真偽値*/}HEAD取得判定 ・{イベント}経過表示時 # 高度なオプション ・{イベント}終了時イベント ・{イベント}エラー時#~エラーメッセージと言う ・{ハッシュ}オプション# 送信ヘッダに追加 UAなど ・{ハッシュ}Cookie ・{真偽}有効{=1} ←有効設定 →有効取得 ・{真偽}同期{=1} ・{真偽}Cookie自動取得{=1} # InternetExplorerのCookieを適用 ・{真偽}レジューム機能{=1} ・{真偽}自動ページ転送{=1} ・{真偽}自動エンコード機能# UTF8を自動でエンコード ・{数値}経過表示間隔{=0.1}# 経過表示する間隔(0.1秒ごと) ・{数値}瞬間速度幅{=5} ・{数値}TimeOut秒数{=5} ・{数値}HTTPVer{=1.1} ・ポケット ・タグ# 一時データの格納に使える # ↓読込のみOK ・FILEDATA ・HEAD # 経過表示に使える変数 ・{整数}通信中・{整数}受信回数 ・{整数}受信予定Size・{整数}受信Size ・{整数}開始時間 ・{整数}経過時間 ・{整数}経過パーセント ・{整数}推定残り# 秒 ・{数値}平均速度・{数値}瞬間速度# b/s ・{整数}瞬間Size・{整数}前時間・{整数}瞬間時間 ・{整数}TimeOut回数 #----- ・{ハッシュ}HEAD_HASH・{整数}StatusNum{=200} ・Pass ・送信HEAD・{整数}出力H ・{真偽}一回目判定{=1} ・{真偽}Download判定・{真偽}Chunk判定 ・{真偽}Resume判定・{真偽}SizeOver判定 ・{真偽}中断判定・{真偽}停止判定 ・Host{="www.google.co.jp"}・{整数}Port{=80} ・{整数}ID # フェイク ・{非公開}FURL ・URL取得~FURLで戻る ・{非公開}FFILE ・FILE取得~FFILEで戻る ・{非公開}F有効{=1} ・有効取得~F有効で戻る ・{非公開}Option ・{非公開}FERROR ←エラー設定 ・エラー設定(S)~エラーメッセージ=S;エラー時 #---------------------------------------------------------------- ・開始~ FILEDATA=空;HEAD=空;終了時処理#一応 Option=オプション もし、Option@「User-Agent」=空ならば、Option@「User-Agent」=初期UA もし、Option@「Host」=空ならば、Option@「Host」=Host もし、Cookie自動取得=1ならば、Cookie=FURLのCookie取得 もし、Cookie≠空ならば、Option@「Cookie」=Cookieの改行を「;」に置換 もし、Download判定=1ならば もし、(FFILEの存在=1)AND(レジューム機能=0)ならば FFILEをファイル完全削除 出力H=FFILEを「書」でファイルストリーム開く もし、FFILEの存在=1ならば、 Resume判定=1 受信Size=FFILEのファイルサイズ Option@「Range」=「bytes={受信Size}-」 出力Hで受信Sizeにファイルストリーム位置設定 送信HEAD=Optionを逆HTTPヘッダハッシュ変換("GET",Pass,HTTPVer);接続 もし、同期=0ならば TIMER_OBJ=VCL_CREATE(自身,名前,VCL_GUI_TIMER) VCL_SET(TIMER_OBJ,VCL_PROP_VALUE,経過表示間隔*1000) VCL_SET(TIMER_OBJ,VCL_PROP_ENABLED,1);戻る オンの間 メインループ もし、(通信中=0)AND(一回目判定=0)ならば抜ける (経過表示間隔)秒待つ メインループ後 もし、HEAD取得判定=1ならば、HEADで戻る 違えば、FILEDATAで戻る ・メインループ~ もし、停止判定=1ならば、終了時処理;FERROR=ERROR_STOP;戻る 経過表示時 もし、一回目判定=1ならば、 TimeOut回数に1を直接足す もし、(経過表示間隔*TimeOut回数) TimeOut秒数ならば 終了時処理;FERROR=ERROR_TIMEOUT;戻る 違えば、TimeOut回数=0 ・メインループ後~ 経過表示時 もし、Download判定=1ならば 出力Hで0にファイルストリーム位置設定 FILEDATA=出力Hで(0.5*1024*1024)をファイルストリーム読む 出力Hをファイルストリーム閉じる #自動エンコード機能 もし、自動エンコード機能=1ならば Typeとは文字列=HEAD_HASH@「Content-Type」 Typeを「^([^;]*);」で正規表現マッチ もし、抽出文字列[0]=「text/html」ならば Typeを「charset=([^\s]*)」で正規表現マッチ もし、抽出文字列[0]=「utf-8」ならば FILEDATA=FILEDATAを「UTF8」から「SJIS」へ文字コード変換 もし、Download判定=1ならば、FILEDATAをFFILEに保存 終了時イベント;終了時処理 ・終了時処理~ 通信中=0;切断 もし、TIMER_OBJ≠空ならば VCL_SET(TIMER_OBJ,VCL_PROP_ENABLED,0);TIMER_OBJ=空 もし、SizeOver判定=1ならば もし、出力Hのファイルストリームサイズ≠-1ならば 出力Hをファイルストリーム閉じる FFILEをファイル完全削除 Download判定=0;FILE=空; # 変数の初期化 一回目判定=1;TimeOut回数=0;SizeOver判定=0;停止判定=0; 受信回数=0;受信予定Size=0;受信Size=0;出力H=0; 経過パーセント=0;平均速度=0;瞬間速度=0; ・接続した時~ 通信中=1;開始時間=システム時間; 送信HEADを送信 ・受信した時~ 受信回数に1を直接足す 受信DATAとは文字列=受信 もし、一回目判定=1ならば 一回目判定=0 HEAD=受信DATAから「{~}{~}」まで切り取る もし、HEAD取得判定=1ならば、経過パーセント=100;通信中=0;切断;戻る HEAD_HASH=HEADをHTTPヘッダハッシュ変換 StatusNum=HEAD_HASH@「HTTP.Response」#正しい使いかたではない もし、StatusNum≠200ならば StatusNumで条件分岐 403ならば、経過パーセント=100;通信中=0;切断;FERROR=ERROR_TCP_403;戻る 404ならば、経過パーセント=100;通信中=0;切断;FERROR=ERROR_TCP_404;戻る 301ならば、HEAD_HASH@「Location」にTCP転送;戻る 302ならば、HEAD_HASH@「Location」にTCP転送;戻る 303ならば、HEAD_HASH@「Location」にTCP転送;戻る #レジュームで既にダウンロード完了しているとき/Rangeが不正な場合 416ならば、経過パーセント=100;通信中=0;切断;戻る 違えば、#StatusNumを言う もし、HEAD_HASH@「Content-Length」≠空ならば 受信予定Size=HEAD_HASH@「Content-Length」 もし、Resume判定=1ならば 受信予定Sizeに受信Sizeを直接足す もし、(Download判定=0)AND(受信予定Size (0.5*1024*1024))ならば FILE=「download_{テンポラリフォルダ}{開始時間}.bak」 出力H=FFILEを「書」でファイルストリーム開く SizeOver判定=1;Download判定=1; もし、HEAD_HASH@「Transfer-Encoding」=「chunked」ならば、Chunk判定=1 前時間=開始時間 瞬間Sizeに(受信DATAのバイト数)を直接足す 受信Sizeに(受信DATAのバイト数)を直接足す 経過時間=システム時間-開始時間 経過パーセント=INT(受信Size/受信予定Size*100) 平均速度=受信Size/経過時間*1000 もし、受信回数%瞬間速度幅=0ならば 瞬間時間=システム時間-前時間;前時間=システム時間 瞬間速度=瞬間Size/瞬間時間*1000;瞬間Size=0; 推定残り=INT((受信予定Size-受信Size)/平均速度) もし、Chunk判定=0ならば もし、Download判定=0ならば、FILEDATAに受信DATAを追加 違えば、出力Hで受信DATAをファイルストリーム書く もし、経過パーセント =100ならば 経過パーセント=100;通信中=0;切断;戻る; 違えば FILEDATAに受信DATAを追加 FILEDATAの(FILEDATAのバイト数-4)から1バイト抜き出す もし、それ=「0」ならば FILEDATA=FILEDATAからChunkData抽出 もし、Download判定=1ならば 出力HでFILEDATAをファイルストリーム書く FILEDATA=空 経過パーセント=100;通信中=0;切断;戻る ・URL設定(S)~ FURL=S Host=FURLからURLドメイン名抽出 もし、(FURLを「 (\d+)\/」で正規表現マッチ)≠空ならば、Port=抽出文字列[0] FURLを「http \/\/[^\/]+(\/.*)」で正規表現マッチ Pass=抽出文字列[0] ・FILE設定(S)~ FFILE=S もし、FFILE≠空ならば、Download判定=1 違えば、Download判定=0 ・有効設定(S)~ F有効=S もし、通信中=1ならば もし、F有効=1ならば もし、中断判定=1ならば 一回目判定=1;Resume判定=1;中断判定=0; Option@「Range」=「bytes={受信Size}-」 送信HEAD=Optionを逆HTTPヘッダハッシュ変換("GET",Pass,HTTPVer);接続 違えば、切断;中断判定=1 ・有効切替~ もし、F有効=0ならば、有効=1 違えば、有効=0 ・停止~停止判定=1 ・TCP転送(Sに)~ 切断 もし、自動ページ転送=0ならば、経過パーセント=100;通信中=0;戻る URL=S;一回目判定=1; もし、Option@「User-Agent」=空ならば、Option@「User-Agent」=初期UA もし、Option@「Host」=空ならば、Option@「Host」=Host もし、Cookie自動取得=1ならば、Cookie=FURLのCookie取得 もし、Cookie≠空ならば、Option@「Cookie」=Cookieの改行を「;」に置換 送信HEAD=Optionを逆HTTPヘッダハッシュ変換("GET",Pass,HTTPVer);接続 ・{非公開}TIMER_OBJ ・時満ちた時~ メインループ もし、(通信中=0)AND(一回目判定=0)ならば VCL_SET(TIMER_OBJ,VCL_PROP_ENABLED,0) メインループ後 ・受信データ・エラーメッセージ・{非公開}TCPID{=0}・{非公開}オブジェクト ・接続~TCP_COMMAND(TCPID,"connect","{Host} {Port}") ・切断~TCP_COMMAND(TCPID,"disconnect",0) ・送信(Sを)~TCP_COMMAND(TCPID, "send", S) ・受信~TCP_COMMAND(TCPID,"recv",0)で戻る ・作る~ TCPID=__TCPID;__TCPIDに1を直接足す; TCP_COMMAND(TCPID,"create",自身→名前) HTTP_ID一覧に名前を配列追加 ■TAG #タイマーに追加 ・タグ・ポケット ●逆HTTPヘッダハッシュ変換(SをMethod,Pass,HTTP_Ver) HEAD_TOPとは文字列=「{Method} {Pass} HTTP/{HTTP_Ver}」 HEAD_BTTOMとは配列 もし、S@「UA」≠空ならば、S@「UA」=S@「User-Agent」 Sの「UA」をハッシュキー削除 Sのハッシュキー列挙で反復 もし、S@対象≠空ならば、HEAD_BTTOMに「{対象} {S@対象}」を配列追加 「{HEAD_TOP}{~}{HEAD_BTTOM}{~}{~}」で戻る ●ChunkData抽出(Sの|Sから) 結果とは文字列;DATAとは文字列;ChunkSizeとは数値 オンの間 ChunkSize=INT(「${Sから改行まで切り取る}」) もし、(ChunkSize=「0」)OR(ChunkSize=空)ならば抜ける DATA=Sの1から(ChunkSize)バイト抜き出す 結果にDATAを追加 Sの1から(ChunkSize+2)バイト削除 もし、DATA=空ならば抜ける 結果で戻る ●Cookie取得(URLから|URLの|URLを) 結果とはハッシュ;Hとは数値; DATAとは文字列;DATA配列とは配列; URLを「http //(? www\.)*([^\/]+\/)」で正規表現マッチ Domainとは文字列=抽出文字列[0] 「{テンポラリフォルダ}\Cookies\*.txt」の全ファイル列挙で反復 H=対象を「読」でファイルストリーム開く DATA=Hで(対象のファイルサイズ)をファイルストリーム読む Hをファイルストリーム閉じる オンの間 DATAで「*」まで切り取る エラー監視#壊れている可能性があるので DATA配列=それの配列上下空行削除 エラーならば続ける もし、DATA配列=空ならば抜ける もし、DATA配列[2]=Domainならば 結果@DATA配列[0]=DATA配列[1] #結果=結果の改行を「;」に置換 結果で戻る HTTPGとは変数;TIMERとは変数; 新HTTPオプションとはハッシュ;HTTPG一覧とはハッシュ; ●HTTPG準備(S) (S)回 HTTPG[回数]をHTTPグループとして作成 HTTPG[回数]→ID=回数 HTTPG一覧@回数=0 ●新HTTPデータ取得(URLから|URLの|URLを) IDとは数値=ActiveHTTPG_ID HTTPG[ID]→URL=URL HTTPG[ID]→経過表示時は~経過表示時イベント HTTPG[ID]→オプション=新HTTPオプション HTTPG[ID]→FILE=空;HTTPG[ID]→HEAD取得判定=0; HTTPG[ID]→開始 HTTPG一覧@ID=0 HTTPG[ID]→FILEDATAで戻る ●新HTTPヘッダ取得(URLから|URLの|URLを) IDとは数値=ActiveHTTPG_ID HTTPG[ID]→URL=URL HTTPG[ID]→経過表示時は~経過表示時イベント HTTPG[ID]→オプション=新HTTPオプション HTTPG[ID]→FILE=空;HTTPG[ID]→HEAD取得判定=1; HTTPG[ID]→開始 HTTPG一覧@ID=0 HTTPG[ID]→HEADで戻る ●新HTTPダウンロード(URLをFILEへ|URLからFILEに) IDとは数値=ActiveHTTPG_ID HTTPG[ID]→URL=URL HTTPG[ID]→経過表示時は~経過表示時イベント HTTPG[ID]→オプション=新HTTPオプション HTTPG[ID]→FILE=FILE;HTTPG[ID]→HEAD取得判定=0; HTTPG[ID]→開始 HTTPG一覧@ID=0 HTTPG[ID]→HEADで戻る ●ActiveHTTPG_ID (最大HTTP数)回 もし、HTTPG一覧@回数=0ならば HTTPG一覧@回数=1;回数で戻る HTTPG準備(20)#最大20個のHTTPグループが利用できます !変数宣言が不要 総合 - 今日 - 人 昨日 - 人 名前 コメント
https://w.atwiki.jp/namihappy/pages/12.html
2015年人気の商品を超えて、当店が売買中 すべての商品はすべて新しく着きます。 すべての商品の品質がすべて検査するのが合格です。 みんなを歓迎して選り取りで買います。 当店の誠実と信用は取引して、品質は至上です。 みんなに安心して買ってもらいます。 http //www.topteenpo.com/
https://w.atwiki.jp/api_programming/pages/104.html
下位ページ Content HTTP通信文字化けが起きた パラメータの出力 レスポンスの「確認」 basic 認証 HTTP通信 接続先のURLへ情報を送信し、結果を保存する - @IT java.net.URL HttpURLConnection URLのインスタンスを作成。ここで接続先を指定する。 URLのインスタンスのopenConnectionで接続HttpURLConnectionを作成 パラメータはOutputStreamで出力するJavaによるHTTPリクエスト時のパラメータの渡し方 getResponceMessage()でレスポンスのボディを受け取る disconnect()で通信終了 URL url = new URL(strURL); HttpURLConnection con = (HttpURLConnection)url.openConnection(); connection.setDoOutput(true); connection.setUseCashes(false); connection.setRequestMethod("POST"); // 通信方法にPOSTを指定 // パラメータ送信 OutputStream os = uc.getOutputStream(); // POST用のOutputStreamを取得 PrintStream ps = new PrintStream(os); String postStr = "a=1 b=2 c=3"; ps.print(postStr);// データをPOSTする ps.close(); // 受信 InputStream is = uc.getInputStream(); // POSTした結果を取得 BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String s; while ((s = reader.readLine()) != null) { System.out.println(s); reader.close(); uc.disconnect(); } 文字化けが起きた しばらく何事もなかったのに、Toodledoで新しいタスクを作成する処理を行っているときに、iPhone経由でのタスク登録にて文字化けが発生。(iPhone以外では、日本語のタスクを作成しなかった、とかではないと思うが。。。) アラートで表示 OK サーバでの受取での表示 OK Toodledo での受取 NG なので、servlet→toodledoの送信でだめ?っぽい。 文字コードをセットできる場所として PrintStream 生成時に UTF-8 を追加 [[PrintStream(java.io.OutputStream, boolean, java.lang.String) https //docs.oracle.com/javase/jp/6/api/java/io/PrintStream.html#PrintStream(java.io.OutputStream, boolean, java.lang.String)]] で、正常動作(文字化け回避)になった。 パラメータの出力 パラメータはOutputStreamで出力する (HttpURLConnection).getOutputStream でもOutputStreamはバイト文字列で表記とか、使いづらい。 当初、PrintWriterクラスを使っていたが、日本語を使う必要が出た際に、文字化けで詰まったので、 OutputStreamWriterクラスを使うようにした。 OutputStreamWriter osw = new OutputStreamWriter(connection.gerOutputStream(),"UTF-8"); osw.write(str); osw.close(); OutputStreamWriter PrintWriterを使うのが便利。 JavaによるHTTPリクエスト時のパラメータの渡し方 レスポンスの「確認」 System.err.println(httpcon.getResponseCode()) // 戻り値はint System.err.println(httpcon.getResponseMessage()) getResponseCode() getResponseMessage() HTTPステータスコード - Wikipedia basic 認証 http //x68000.q-e-d.net/~68user/net/java-http-url-connection-2.html https //developer.android.com/reference/android/util/Base64.html http //www.programing-style.com/android/android-api/android-basic-authentication/ 正式な?方法があるらしいが、代替的な方法で、client_id と client_secret をパラメータとして渡す方法もあるらしい。
https://w.atwiki.jp/freememo/pages/48.html
HINTERNET g_hInet; HINTERNET g_hURL; //===========================================================================// /*! @brief WinInetライブラリ初期処理 @param[in] lpszURL 対象URL @return 成否 */ //===========================================================================// BOOL InitWinInet(LPCTSTR lpszURL) { // WinInetライブラリ開始 g_hInet = InternetOpen( L"", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (g_hInet == NULL) { return FALSE; } // セッションオープン g_hURL = InternetOpenUrl(g_hInet, lpszURL, NULL, 0, 0, 0); if (g_hURL == NULL) { return FALSE; } return TRUE; } //===========================================================================// /*! @brief WinInetライブラリ終了処理 @return 無し */ //===========================================================================// void TerminateWinInet() { // WinInet関連ハンドル開放 if (g_hURL) { InternetCloseHandle(g_hURL); } if (g_hInet) { InternetCloseHandle(g_hInet); } } //===========================================================================// /*! @brief HTTPソース取得 @param[in] lpszURL 対象URL @param[out] lpOutBuffer HTTPソースバッファ @param[in/out] hMem メモリハンドル @return 成否 */ //===========================================================================// BOOL WINAPI NMAPI_GetHttpHeader(LPCTSTR lpszURL, LPTSTR lpOutBuffer, HGLOBAL hMem) { BOOL bRet = FALSE; // WinInetライブラリ初期処理 if (! InitWinInet(lpszURL)) { goto END; } // バッファバイト数取得 DWORD dwSize = 0; if (! HttpQueryInfo(g_hURL, HTTP_QUERY_RAW_HEADERS_CRLF, (LPVOID)NULL, dwSize, NULL)) { if (GetLastError()==ERROR_HTTP_HEADER_NOT_FOUND) { goto END; } } // メモリ再割り当て hMem = GlobalReAlloc(hMem, (SIZE_T)dwSize+1, GMEM_MOVEABLE); if (hMem == NULL) { goto END; } lpOutBuffer = (TCHAR *)GlobalLock(hMem); if (lpOutBuffer == NULL) { goto END; } // HTTPヘッダ情報取得 if (! HttpQueryInfo(g_hURL, HTTP_QUERY_RAW_HEADERS_CRLF, (LPVOID)lpOutBuffer, dwSize, NULL)) { goto END; } bRet = TRUE; END // WinInetライブラリ終了処理 TerminateWinInet(); return bRet; } //===========================================================================// //呼び出し側 //===========================================================================// { HGLOBAL hMem = GlobalAlloc(GHND, sizeof(TCHAR)); CHAR* lpszSource = (CHAR*)GlobalLock(hMem); if (NMAPI_GetHttpSource(strURL, lpszSource, hMem)) { ・・・ ・・・ ・・・ } // メモリ開放 GlobalUnlock(hMem); GlobalFree(hMem); }
https://w.atwiki.jp/yatteyoruby/pages/11.html
WWW.mechanaizeとは? ライブラリの一つ 例えばmixiに投稿する場合 main.rb +... require mixidiary me = MixiDiary.new( hogehoge@example.co.jp , password ) me.login me.edit( 件名 , 本文 ) me.logout mixidiary.rb +... $KCODE= EUC require mechanize require kconv class MixiDiary def initialize(username = nil, password = nil) @id = nil @username = username @password = password @agent = WWW Mechanize.new{|a| begin a.log = Logger.new( access.log ) rescue p "access.log is nothing" end } end def login if @username == nil || @password == nil p "username or password is nothing" exit end begin @agent.post( http //mixi.jp/login.pl , { email = @username, password = @password, next_url = /home.pl } ) @page = get_page( http //mixi.jp/home.pl ) rescue p "some error" exit end end def get_page(get_page_url = nil) @agent.get(get_page_url) end def edit(title=nil, content=nil) if title == nil || content == nil p "title or content is nothing" exit end if /add_diary\.pl\?id=(\d+)/ =~ @page.body @id = $1 end edit_page = get_page( http //mixi.jp/add_diary.pl?id= +@id) edit_forms = edit_page.forms.name( diary ).first edit_forms[ diary_title ] = title.toeuc edit_forms[ diary_body ] = content.toeuc begin confirm_page = @agent.submit(edit_forms) @agent.submit(confirm_page.forms[0]) #確認処理を常に「はい」で処理 rescue p "submit error" end end def logout @agent.post( http //mixi.jp/logout.pl ) end end 名前 コメント
https://w.atwiki.jp/vip-mhp2g/pages/28.html
・Kai VIP部屋の場所 今現在、Kaiスレの方にはクランが存在しないため、5-2 OnlyKeyRoomアリーナを使用しています。 5-2アリーナへの行き方 PSP ⇒ Action ⇒ MonsterHunterPortable2ndG ⇒ Japanese ⇒ 5-2PlayArena パス基本 まずはVIP部屋があるかどうか確認しましょう、なければor埋まっていたら自分で立てる。 部屋を立てた場合、Kaiスレで「Kai 部屋名@~(あと入れる人数)」と書き込めば人がくるとおもうよ! プレイヤー人数は基本的に4people、パスは基本(OnlyKeyRoomアリーナの為、パスは必ずつけること) VIP部屋としてたてる場合は、コメントに必ず「VIP」などわかりやすい言葉を入れましょう。 上位、下位、クエスト一択部屋等は、その趣旨をしっかり明記しましょう。(例:VIP下位上位) 無言でやるなら無言部屋アリーナいけばいいとおもうよ! 挨拶は忘れずに、クエスト終わったら「おpppp」
https://w.atwiki.jp/xbox360gta4/pages/436.html
www.libertycityrealestate.net リバティーシティの不動産に関するサイト。ドバイの富豪、ユセフ・アミールの自慢話が延々と書かれている。
https://w.atwiki.jp/gohongilab2/pages/73.html
tags Microsoft Netscape Quittner_J Slatalla_M browser case url auther bibtex en @book{QuittnerSlatalla1998speeding, title={{Speeding the net the inside story of Netscape and how it challenged Microsoft}}, author={Quittner, J. and Slatalla, M.}, isbn={0871137097}, year={1998}, publisher={Atlantic Monthly Press} } ja @book{QuittnerSlatalla1998speeding, title={{Speeding the net the inside story of Netscape and how it challenged Microsoft}}, author={Quittner, J. and Slatalla, M.}, isbn={0871137097}, year={1998}, publisher={Atlantic Monthly Press}, note ={{(安蒜泰樹訳, マイクロソフトへの挑戦 ネットスケープはいかにしてマイクロソフトに挑んだのか, 毎日コミュニケーションズ (1999))}} } format for references CIRIEC Japan Quittner, J. and Slatalla, M. [1998] 『Speeding the net the inside story of Netscape and how it challenged Microsoft』Atlantic Monthly Press (安蒜泰樹訳 [1999] 『マイクロソフトへの挑戦 ネットスケープはいかにしてマイクロソフトに挑んだのか』 毎日コミュニケーションズ) abstract memo プロローグ pp. 9ja アンドリーセンとその友人、エリック・ピーナは、原型となるコードを1992年から93年にまたがる冬の数週間で書き上げた。 p. 64en, pp. 92ja So it was no wonder that they were invited to go to Boston in Julyk where O Reilly Associates was sponsoring a World Wide Web Wizards Workshop. /*snip* O Reilly hoped to work more closely with developers to make sure that, while different browsers that displayed documents might come and go, all the documents--that is, all content--would be written in a universal format. This was tricker than it sounded. Was it possible, for instance, for the Web to support new graphical browsers like Mosaic while remaining compatible with text-based browser? /*snip* As soon as beta versions of Mosaic for Mac and for Windows had been publicly released, NCSA s server had ... /*snip* The developers of the Midas browser and the Cello browser were there. p. 69en For Dale Dougherty of O Reilly this was widespread accessibility of Mosaic raised a fundamental question Who was going to control the future direction of the Web? Two camps were emerging at the workshop. On one hand, the Web was Tim Berners-Lee s creation, and Berners-Lee argued ferventry that developers should agree on standard approaches to writing software. Berners-Lee didn t want the Web to evolve into, say, sixteen different Webs, each accessible only with a single browser. HTML had been developed as a kind of generic language that an auther would use to convey text. But HTML didn t dictate any graphical parameters for how a document would be presented on-screen. That was fine with Berners-Lee; in fact, it wa almost a mantra. He kept making the point that he wanted users with text-only monitors to have the same equal experience on the Web as users who had fancier computers with graphical capabilities. Berners-Lee said he thought the basic idea behind the markup language was the content it conveyed. Let each individual user decide how to display it, rather than creating a browser that dictated how content should be displayed. It wa a purist s view, an idealist s view, and the Mosaic team saw it was holding back the Web. They understood Berners-Lee, certainly, but they were on the other side of the argument. He wanted to do the pure thing; they wanted to create a browser that did fun and cool things. p. 70en It was clear, from the tenor of the workshop and the growing importance of Mosaic, that Andreesen would assume a position of leadership in determining the future of Web development. And his attitude toward change was anything but moderate. If he thought of a new future for his browser, he simply sat down and banged it out. He didn t call for a committee vote. p. 71en Dougherty sensed that some in the room worried that Andreessen and Bina s creation would take off on its own, leaving the rest of the Web behind. cited as